home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula 1
/
Nebula One.iso
/
Mail
/
MailEnclosure
/
Source.v0.15
/
cvs.postamble
< prev
next >
Wrap
Text File
|
1995-06-12
|
10KB
|
261 lines
# $Id: cvs.postamble,v 1.2 94/04/10 13:13:03 nwc Exp $
# cvs.postamble
# Art Isbell
# isbell@cats.ucsc.edu
#
# NeXTSTEP 3.0's ProjectBuilder and InterfaceBuilder do not work well with CVS
# (Concurrent Versions System). Occasionally, InterfaceBuilder complains that
# it cannot save certain directories (e.g., nib's and rtfd's) containing a CVS
# administrative directory; saving a second time will force a successful save.
# But a successful save causes these CVS directories to be lost resulting in
# CVS complaining that it cannot check in these directories during a subsequent
# CVS commit. All CVS administrative directories are copied into the product
# when the "app", "debug", or "profile" targets are made. Although the
# existence of these directories appears to cause no problems, it serves no
# purpose and increases the product size. cvs.postamble attempts to correct
# these problems.
#
# In addition, once a CVS working directory has been created, all CVS commands
# can be run from ProjectBuilder using the "cvs" target.
#
# One approach to using cvs.postamble is to install it in a well-known
# directory (e.g., /LocalDeveloper/Makefiles) defined as LOCALMAKEDIR in
# Makefile.preamble:
#
# LOCALMAKEDIR = /LocalDeveloper/Makefiles
#
# and include it in Makefile.postamble (separate "include" statements from
# surrounding statements by at least one blank line):
#
# include $(LOCALMAKEDIR)/cvs.postamble
#
# Defined in cvs.postamble:
# CVSDIR - name of CVS administrative directories.
CVSDIR = CVS
# Example:
# To use cvs.postamble with versions of CVS that use a administrative
# directory name different from "CVS" (e.g., "CVS.adm"), change the
# above statement to:
# CVSDIR = CVS.adm
# CVSARCHIVE - archive file in the CVS working directory in which all CVS
# administrative directories will be stored during project modification.
CVSARCHIVE = CVS.tar
# Example:
# To change CVSARCHIVE to be "foo.tar", change the above statement
# to:
# CVSARCHIVE = foo.tar
# CVSROOT - full path to CVS repository root directory. This will be used
# to set the CVSROOT environment variable from the Bourne (not C) shell
# in which the cvs command is executed, so any '$' must be escaped with
# another '$'.
CVSROOT = $$HOME/Development/CVS
# Example:
# To change CVSROOT to /usr/cvsroot, change the above statement to:
# CVSROOT = /usr/cvsroot
# CVS - full path of the cvs executable.
CVS = /usr/local/bin/cvs
#
# Inputs from "make" macro definition arguments (defaults set in
# cvs.postamble):
# SEARCHDIRS - white space delimited list of one or more directories relative
# to the CVS working directory to which to limit the scope of the current
# target. This minimizes the time to make the target after a CVS
# checkout or before a CVS commit of a specific subdirectory of a CVS
# working directory. No directory in SEARCHDIRS should be a subdirectory
# of any other directory in SEARCHDIRS. Bourne shell wildcard characters
# can be used.
SEARCHDIRS = .
# Example:
# To make the ARCHIVE_CVS_DIRS target on an unlocalized nib, foo.nib,
# and a localized Help directory, German.lproj/Help, include a macro
# definition as a "make" argument, either from a shell command line:
# % make ckout SEARCHDIRS="foo.nib German.lproj/Help"
# or as an entry in the "Args" FormCell in ProjectBuilder's Builder
# View:
# ckout SEARCHDIRS="foo.nib German.lproj/Help"
# PRODUCTS - white space delimited list of one or more product directories
# from which all CVS directories are to be deleted.
PRODUCTS = debug app profile
# Example:
# To remove CVS directories from foo.debug and foo.app, but not
# foo.profile, include a macro definition as a "make" argument,
# either from a shell command line:
# % make rm PRODUCTS="debug app"
# or as an entry in the "Args" FormCell in ProjectBuilder's Builder
# View:
# rm PRODUCTS="debug app"
#
# Targets: (Customize target names, if desired.)
ARCHIVE_CVS_DIRS = ckout cvs_dirs_out cvs_archive
# Archives all CVS directories (excluding NAME.app, NAME.debug,
# NAME.profile, and backup directories (~)) rooted in SEARCHDIRS
# (default = .) into CVSARCHIVE. THIS TARGET MUST BE MADE AFTER A CVS
# CHECKOUT AND BEFORE AN IB SAVE TO AVOID LOSS OF CVS DIRECTORIES!!
# Example:
# To copy French.lproj/foo.nib's CVS directory to CVSARCHIVE
# immediately after checking it out from the CVS repository, include
# a macro definition as a "make" argument, either from a shell
# command line:
# % make ckout SEARCHDIRS=French.lproj/foo.nib
# or as an entry in the "Args" FormCell in ProjectBuilder's Builder
# View:
# ckout SEARCHDIRS=French.lproj/foo.nib
RESTORE_CVS_DIRS = ckin cvs_dirs_in cvs_restore
# Restores all CVS directories rooted in SEARCHDIRS (default = .) from
# CVSARCHIVE. THIS TARGET MUST BE MADE AFTER THE LAST IB SAVE AND BEFORE
# CVS COMMIT TO AVOID AN UNSUCCESSFUL COMMIT!!
# Example:
# To prepare English.lproj/Help/Index.rtfd for a CVS commit after its
# modification in InterfaceBuilder, include a macro definition as a
# "make" argument, either from a shell command line:
# % make ckin SEARCHDIRS=English.lproj/Help/Index.rtfd
# or as an entry in the "Args" FormCell in ProjectBuilder's Builder
# View:
# ckin SEARCHDIRS=English.lproj/Help/Index.rtfd
REMOVE_CVS_DIRS = rm cvs_dirs_rm
# Removes CVS directories from PRODUCTS in the CVS working directory.
# Making this target is not necessary and should be done only when
# desiring to rid an uninstalled product of its CVS directories. See
# example in "PRODUCTS" above.
# cvs
# Runs any CVS command specified by the value of the ARGS variable.
# However, any command requiring user input in an editor (e.g., cvs
# checkin) should not be run because of lack of terminal support in
# ProjectBuilder Builder View's ScrollView.
# Example:
# To run "cvs -d $HOME/cvsroot checkout -r tag foomod/barfile":
# cvs ARGS="-d $HOME/cvsroot checkout -r tag foomod/barfile"
# help
# Adds help for CVS-specific targets.
# before_install
# Removes CVS directories before the app is installed as the "install"
# target is being made. Should not be explicitly made.
#
# $Log: cvs.postamble,v $
# Revision 1.2 94/04/10 13:13:03 nwc
# merging in work code.
#
# Revision 1.1 1994/03/26 23:28:42 nwc
# Added cvs stuff.
#
# Revision 1.1 1992/12/09 03:12:32 nwc
# Helps cvs deal with NS3.0 nibs
#
# Revision 1.6 1992/10/15 18:52:23 art
# Added "find" options to prevent cvs from searching through various app
# wrappers when either archiving or restoring CVS directories.
#
# Revision 1.5 1992/09/01 04:43:56 art
# Replaced tabs (except those at beginning of target rule lines) with 4
# spaces and rewrapped lines so that file is more readable using Edit's
# default 8-column tab width.
#
# Revision 1.4 1992/08/31 17:57:15 art
# Made target names easy to change to local preferences. Added cvs-specific
# help.
#
# Revision 1.3 1992/08/27 20:32:15 art
# Fixed bug that prevented the restoration of missing CVS directories in the
# cvsci target. Added code to skip backup directories when cvsci is being
# made.
#
# Revision 1.2 1992/08/27 04:42:50 art
# Changed archiving of CVS administration directories to a tar archive so
# that CVS doesn't try to descend into archive directory during cvs update.
# Added a target that permits the running of CVS commands from ProjectBuilder.
#
# Revision 1.1.1.1 1992/08/10 01:42:32 art
# Initial release
#
# Variables
FIND = /usr/bin/find
XARGS = /usr/bin/xargs
SED = /bin/sed
GNUTAR = /usr/bin/gnutar
# Targets
$(ARCHIVE_CVS_DIRS):
@for searchdir in $(SEARCHDIRS) ; do \
for dir in `$(FIND) $$searchdir -type d \( \( -name '*~' -o \
-name "$(NAME).debug" -o -name "$(NAME).app" -o \
-name "$(NAME).profile" -o -name '*obj' \) -prune \) -o \
\( -name "$(CVSDIR)" -prune -print \) | \
$(SED) 's/^\.\/\(.*\)$$/\1/'` ; do \
$(ECHO) Checking $$dir ; \
$(GNUTAR) uf $(CVSARCHIVE) $$dir; \
done ; \
done
$(RESTORE_CVS_DIRS):
@if [ ! -f "$(CVSARCHIVE)" ] ; then \
$(ECHO) Cannot proceed without CVS archive ; \
exit ; \
fi ; \
for searchdir in $(SEARCHDIRS) ; do \
for dir in `$(FIND) $$searchdir -type d \( \
\( \( -name "$(CVSDIR)" -o -name '*~' -o \
-name "$(NAME).debug" -o -name "$(NAME).app" -o \
-name "$(NAME).profile" -o -name '*obj' \) -prune \) -o \
-print \) | $(SED) 's/^\.\/\(.*\)$$/\1/'` ; do \
$(ECHO) Checking $$dir ; \
if [ ! -d $$dir/$(CVSDIR) ] ; then \
if [ $$dir = . ] ; then \
tardir=$(CVSDIR) ; \
else \
tardir=$$dir/$(CVSDIR) ; \
fi ; \
$(GNUTAR) xf $(CVSARCHIVE) $$tardir >/dev/null 2>&1 ; \
fi ; \
done ; \
done
$(REMOVE_CVS_DIRS):
@for product in $(PRODUCTS) ; do \
product=$(NAME).$$product ; \
if [ -d "$$product" ] ; then \
$(ECHO) "Removing $(CVSDIR) directories from $$product" ; \
$(FIND) $$product -name "$(CVSDIR)" -prune -print | \
$(XARGS) $(RM) -rf ; \
fi ; \
done
cvs:
@if [ -z "$(ARGS)" ] ; then \
$(ECHO) Usage: cvs ARGS=\"[cvs_options] cvs_command [command_options] [command_args]\" ; \
else \
CVSROOT=$(CVSROOT) $(CVS) $(ARGS) ; \
fi
before_install::
@set $(REMOVE_CVS_DIRS) ; \
$(MAKE) "PRODUCTS = app" $$1